/**
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

package pittypat.configuration;

/**
 * 用于配置一个功能。
 */
public final class FunctionConfig {
	private String identifier;
	private String uploadPath;
	private int maxUploadSize;
	private String[] uploadExtensions;
	// 一个空的字符串集合。
	private static final String[] EMPTY_STRINGS = new String[0];

	/**
	 * 使用标识符、上传文件的路径、最大上传文件的尺寸、允许的上传文件类型列表初始化 FunctionConfig 类的新实例。
	 */
	public FunctionConfig(String identifier, String uploadPath, int maxUploadSize, String uploadExtensions) {
		this.identifier = identifier == null ? "" : identifier;
		this.uploadPath = uploadPath == null ? "" : uploadPath;
		this.maxUploadSize = maxUploadSize < 1 ? 1 : maxUploadSize;
		this.uploadExtensions = uploadExtensions == null || uploadExtensions.length() == 0 ? EMPTY_STRINGS : uploadExtensions.split(",");
	}

	/**
	 * 获取功能的标识符，区分大小写。
	 * <p>
	 * 由于 Java 中仅支持区分大小写的类型搜索，因此此标识符必须与功能的 FunctionArgs 类型名称大小写完全一致，也就是说，功能标识符是区分大小写的。否则会产生 404 错误。
	 * 
	 * @return 功能标识符，区分大小写。
	 */
	public String getIdentifier() {
		return this.identifier;
	}

	/**
	 * 获取上传文件的保存路径。
	 * 
	 * @return 上传文件的保存路径。
	 */
	public String getUploadPath() {
		return this.uploadPath;
	}

	/**
	 * 获取最大上传文件的尺寸，单位：KB。
	 * 
	 * @return 最大上传文件的尺寸。
	 */
	public int getMaxUploadSize() {
		return this.maxUploadSize;
	}

	/**
	 * 获取允许的上传文件的扩展名称的列表，每一个元素表示一个文件扩展名称，扩展名称使用 '.' 开始。
	 * 
	 * @return 允许的上传文件的扩展名称的列表。
	 */
	public String[] getUploadExtensions() {
		return this.uploadExtensions;
	}
}
